﻿Imports Negocio
Imports Utilitario
Imports Entidad
Public Class frmRegistroClientes

    'Instancias de Servicios
    '*******************************************************************************************************
    Dim util As New Utiles
    Dim servicio1 As New ClienteNegocio
    Dim servicio2 As New PedidoNegocio

    'Declaracion de Variables
    '*******************************************************************************************************
    Dim CIA As String = "01"
    Dim SUC As String = "01"
    Dim codigoCliente As String = ""
    Dim cambiante As Boolean = True
    Dim codSucursal As String = ""
    Dim usuario As String = "SEC001"
    Dim dataSucursalAgencia As New DataView

    'Creacion de Metodos
    '*******************************************************************************************************
    Sub New()
        ' Llamada necesaria para el diseñador.
        InitializeComponent()

        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().

    End Sub

    Sub New(codCliente As String)
        ' Llamada necesaria para el diseñador.
        InitializeComponent()

        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
        Me.codigoCliente = codCliente
    End Sub

    Sub mostrarPersonasClientes()
        Dim ds As DataSet = servicio1.obtenerClientePersonas(txtCliente.Text.Trim)
        dgvPropietario.Rows.Clear()
        For i = 0 To ds.Tables(0).Rows.Count - 1
            dgvPropietario.Rows.Add(ds.Tables(0).Rows(i)("CLP_Dni").ToString.Trim, ds.Tables(0).Rows(i)("CLP_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("CLP_Domicilio").ToString.Trim,
                                    ds.Tables(0).Rows(i)("CLP_Fax").ToString.Trim, ds.Tables(0).Rows(i)("CLP_Telefono").ToString.Trim, ds.Tables(0).Rows(i)("DEP_Descripcion").ToString.Trim,
                                    ds.Tables(0).Rows(i)("PRO_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("DIS_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("CAR_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("TIP_Descripcion").ToString.Trim,
                                    ds.Tables(0).Rows(i)("CLP_Codigo").ToString.Trim, ds.Tables(0).Rows(i)("CLP_Activo").ToString.Trim, ds.Tables(0).Rows(i)("TIP_Codigo").ToString.Trim)
        Next
        If ds.Tables(0).Rows.Count > 0 Then
            dgvPropietario.Rows(0).Selected = False
        End If
    End Sub

    Sub cargarTiposConceptos()
        Dim ds As DataSet = servicio1.obtenerTipoConceptos()
        With cboConcepto
            .DataSource = ds.Tables(0)
            .ValueMember = "CON_Codigo"
            .DisplayMember = "CON_Descripcion"
        End With
    End Sub

    Sub cargaInicial()
        cargarTiposConceptos()
        cargarMotivosLineaCredito()
        cargarMotivosBloqueos()
        cargarGruposClientes()
        mostrarProcedencia("")
        mostrarClase("")
        mostrarEstado("")
        mostrarCategoria("")
        mostrarTipo(cboClase.SelectedValue.ToString, "")
        mostrarCondicionVenta("")
        cargarDepartamentos(cboDepartamento1)
        cargarProvincias(cboDepartamento1.SelectedValue.ToString, cboProvincia1)
        cargarDistritos(cboProvincia1.SelectedValue.ToString, cboDistrito1)
        If codigoCliente <> "" Then
            txtCliente.Text = codigoCliente
            util.enfocar()
        End If
    End Sub

    Sub cargarDepartamentos(combo As ComboBox)
        Dim ds As DataSet = servicio2.listarDepartamentos()
        With combo
            .DataSource = ds.Tables(0)
            .ValueMember = "DEP_Codigo"
            .DisplayMember = "DEP_Descripcion"
        End With
    End Sub

    Sub cargarProvincias(codDepartamento As String, combo As ComboBox)
        Dim ds As DataSet = servicio2.listarProvinciaXDepartamento(codDepartamento)
        With combo
            .DataSource = ds.Tables(0)
            .ValueMember = "PRO_Codigo"
            .DisplayMember = "PRO_Descripcion"
        End With
    End Sub

    Sub cargarDistritos(codProvincia As String, combo As ComboBox)
        Dim ds As DataSet = servicio2.listarDistritosXProvincia(codProvincia)
        With combo
            .DataSource = ds.Tables(0)
            .ValueMember = "DIS_Codigo"
            .DisplayMember = "DIS_Descripcion"
        End With
    End Sub

    Sub mostrarProcedencia(codProcedencia As String)
        Dim ds As DataSet = servicio1.obtenerProcedenciaCliente()
        If ds.Tables(0).Rows.Count > 0 Then
            With cboProcedencia
                .DataSource = ds.Tables(0)
                .ValueMember = "PRC_Codigo"
                .DisplayMember = "PRC_Descripcion"
            End With

            If codProcedencia <> "" Then
                cboProcedencia.SelectedValue = codProcedencia
            End If
        End If
    End Sub

    Sub cargarMotivosLineaCredito()
        Dim ds As DataSet = servicio1.obtenerMotivosLineaCredito()
        With cboMotivoLC
            .DataSource = ds.Tables(0)
            .ValueMember = "MLC_Codigo"
            .DisplayMember = "MLC_Descripcion"
        End With
    End Sub

    Sub cargarMotivosBloqueos()
        Dim ds As DataSet = servicio1.obtenerMotivosBloqueos()
        With cboMotivoBL
            .DataSource = ds.Tables(0)
            .ValueMember = "MBL_Codigo"
            .DisplayMember = "MBL_Descripcion"
        End With
    End Sub

    Sub mostrarClase(codClase As String)
        Dim ds As DataSet = servicio1.obtenerClaseCliente()
        If ds.Tables(0).Rows.Count > 0 Then
            With cboClase
                .DataSource = ds.Tables(0)
                .ValueMember = "CLC_Codigo"
                .DisplayMember = "CLC_Descripcion"
            End With

            If codClase <> "" Then
                cboClase.SelectedValue = codClase
            End If
        End If
    End Sub

    Sub mostrarEstado(codEstado As String)
        Dim ds As DataSet = servicio1.obtenerEstadoCliente()
        If ds.Tables(0).Rows.Count > 0 Then
            With cboEstado
                .DataSource = ds.Tables(0)
                .ValueMember = "ESC_Codigo"
                .DisplayMember = "ESC_Descripcion"
            End With

            If codEstado <> "" Then
                cboEstado.SelectedValue = codEstado
            End If
        End If
    End Sub

    Sub mostrarCategoria(codCategoria As String)
        Dim ds As DataSet = servicio1.obtenerCategoriaCliente()
        If ds.Tables(0).Rows.Count > 0 Then
            With cboCategoria
                .DataSource = ds.Tables(0)
                .ValueMember = "CAC_Codigo"
                .DisplayMember = "CAC_Descripcion"
            End With

            If codCategoria <> "" Then
                cboCategoria.SelectedValue = codCategoria
            End If
        End If
    End Sub

    Sub mostrarTipo(codClase As String, codTipo As String)
        Dim ds As DataSet = servicio1.obtenerTipoClienteXClase(codClase)
        If ds.Tables(0).Rows.Count > 0 Then
            With cboTipo
                .DataSource = ds.Tables(0)
                .ValueMember = "TIC_Codigo"
                .DisplayMember = "TIC_Descripcion"
            End With

            If codTipo <> "" Then
                cboTipo.SelectedValue = codTipo
            End If
        End If
    End Sub

    Sub mostrarCondicionVenta(codCondicion As String)
        Dim ds As DataSet = servicio1.obtenerCondicionVenta()
        If ds.Tables(0).Rows.Count > 0 Then
            With cboVenta
                .DataSource = ds.Tables(0)
                .ValueMember = "CNV_Codigo"
                .DisplayMember = "CNV_Descripcion"
            End With

            If codCondicion <> "" Then
                cboVenta.SelectedValue = codCondicion
            End If
        End If
    End Sub

    Sub mostrarVendedor(codVendedor As String)
        Dim ds As DataSet = servicio2.obtenerListaVendedores(codVendedor)
        If ds.Tables(0).Rows.Count > 0 Then
            txtVendedor.Text = ds.Tables(0).Rows(0)("VEN_Codigo").ToString.Trim
            lblVendedor.Text = ds.Tables(0).Rows(0)("VEN_Descripcion").ToString.Trim
        Else
            util.mensaje("Vendedor incorrecto o no ingresado.")
            txtVendedor.Text = ""
        End If
    End Sub

    Sub mostrarCobradores(codCobrador As String, codCIA As String)
        Dim ds As DataSet = servicio2.obtenerListaCobradores(codCobrador, codCIA)
        If ds.Tables(0).Rows.Count > 0 Then
            txtCobrador.Text = ds.Tables(0).Rows(0)("COB_Codigo").ToString.Trim
            lblCobrador.Text = ds.Tables(0).Rows(0)("COB_Descripcion").ToString.Trim
        Else
            util.mensaje("Cobrador incorrecto o no ingresado")
            txtCobrador.Text = ""
        End If
    End Sub

    Sub mostrarInformacion(ds As DataSet)
        'Empezamos a setear los datos obtenidos
        txtDNI.Text = ds.Tables(0).Rows(0)("CLI_DNI").ToString.Trim
        txtRazonSocial.Text = ds.Tables(0).Rows(0)("CliDescripcion").ToString.Trim
        txtNombreComercial.Text = ds.Tables(0).Rows(0)("CLI_NomComercial").ToString.Trim
        txtDireccionFiscal.Text = ds.Tables(0).Rows(0)("CLI_DireccionFiscal").ToString.Trim
        txtLatitud.Text = ds.Tables(0).Rows(0)("CLI_Latitud").ToString.Trim
        txtLongitud.Text = ds.Tables(0).Rows(0)("CLI_Longitud").ToString.Trim
    End Sub

    Sub mostrarInformacionClienteXRUC(numRUC As String)
        Dim ds As DataSet = servicio1.obtenerClientesXFiltro("", numRUC, "", "", "0", "0", "0")
        If ds.Tables(0).Rows.Count > 0 Then
            mostrarInformacion(ds)
        Else
            util.mensaje("Número de RUC no registrado. ¿PREGUNTA?")
        End If
    End Sub

    Sub mostrarActivo(flag As String)
        If flag = "0" Then
            chkActivo.Checked = False
        ElseIf flag = "1" Then
            chkActivo.Checked = True
        End If
    End Sub

    Sub mostrarPercepcion(flag As String)
        If flag = "0" Then
            chkPercepcion.Checked = False
        ElseIf flag = "1" Then
            chkPercepcion.Checked = True
        End If
    End Sub

    Sub actualizarInformacionCliente()
        If MsgBox("¿Esta seguro que desea actualizar los datos del cliente?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            Dim entCliente As New Cliente(txtCliente.Text.Trim, txtGrupo.Text.Trim, txtRazonSocial.Text.Trim, txtRUC.Text.Trim,
                                                  "", txtDNI.Text.Trim, txtDireccionFiscal.Text.Trim, txtVendedor.Text.Trim,
                                                  txtNombreComercial.Text.Trim, txtTelefono.Text.Trim, txtMarca.Text.Trim, IIf(chkPercepcion.Checked = True, "1", "0"),
                                                  txtLatitud.Text.Trim, txtLongitud.Text.Trim, cboDistrito1.SelectedValue.ToString, txtCobrador.Text.Trim,
                                                  cboProcedencia.SelectedValue.ToString, cboClase.SelectedValue.ToString, cboTipo.SelectedValue.ToString, cboEstado.SelectedValue.ToString,
                                                  cboCategoria.SelectedValue.ToString, cboVenta.SelectedValue.ToString, txtEmpRazon.Text.Trim, txtEmpTel.Text.Trim, txtEmpFax.Text.Trim, txtEmpEmail.Text.Trim,
                                                  IIf(chkDocVencidos.Checked = True, "1", "0"), IIf(chkLetXAceptar.Checked = True, "1", "0"), IIf(chkLetProtestadas.Checked = True, "1", "0"), IIf(chkSinLC.Checked = True, "1", "0"), IIf(chkBloqManual.Checked = True, "1", "0"), cboMotivoBL.SelectedValue.ToString,
                                                  IIf(chkActivo.Checked = True, "1", "0"))

            If servicio1.actualizarCliente(entCliente) = True Then
                util.mensaje("Cliente actualizado correctamente.")
            Else
                util.mensaje("Hubo un error al intentar actualizar al cliente. Intentelo nuevamente.")
            End If
        End If
    End Sub

    Sub registrarInformacionCliente()
        If MsgBox("¿Esta seguro que desea registrar a la persona como cliente?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            Dim entCliente As New Cliente(txtCliente.Text.Trim, txtGrupo.Text.Trim, txtRazonSocial.Text.Trim, txtRUC.Text.Trim,
                                                  "0.0", txtDNI.Text.Trim, txtDireccionFiscal.Text.Trim, txtVendedor.Text.Trim,
                                                  txtNombreComercial.Text.Trim, txtTelefono.Text.Trim, txtMarca.Text.Trim, IIf(chkPercepcion.Checked = True, "1", "0"),
                                                  txtLatitud.Text.Trim, txtLongitud.Text.Trim, cboDistrito1.SelectedValue.ToString, txtCobrador.Text.Trim,
                                                  cboProcedencia.SelectedValue.ToString, cboClase.SelectedValue.ToString, cboTipo.SelectedValue.ToString, cboEstado.SelectedValue.ToString,
                                                  cboCategoria.SelectedValue.ToString, cboVenta.SelectedValue.ToString, txtEmpRazon.Text.Trim, txtEmpTel.Text.Trim, txtEmpFax.Text.Trim, txtEmpEmail.Text.Trim,
                                                  IIf(chkDocVencidos.Checked = True, "1", "0"), IIf(chkLetXAceptar.Checked = True, "1", "0"), IIf(chkLetProtestadas.Checked = True, "1", "0"), IIf(chkSinLC.Checked = True, "1", "0"), IIf(chkBloqManual.Checked = True, "1", "0"), cboMotivoBL.SelectedValue.ToString,
                                                  IIf(chkActivo.Checked = True, "1", "0"))

            If servicio1.registrarCliente(entCliente, usuario) = True Then
                util.mensaje("Cliente registrado correctamente.")
                cargarGruposClientes()
                mostrarBotones(False, True)
            Else
                util.mensaje("Hubo un error al intentar registrar al cliente. Intentelo nuevamente.")
            End If
        End If
    End Sub

    Sub mostrarBotones(bool1 As Boolean, bool2 As Boolean)
        btnGuardar.Visible = bool1
        btnActualizar.Visible = bool2
    End Sub

    Sub mostrarBloqueos(fDV As String, fLA As String, fLP As String, fSLC As String, fBM As String, motbloq As String)
        If fDV = "1" Then
            chkDocVencidos.Checked = True
        Else
            chkDocVencidos.Checked = False
        End If
        If fLA = "1" Then
            chkLetXAceptar.Checked = True
        Else
            chkLetXAceptar.Checked = False
        End If
        If fLP = "1" Then
            chkLetProtestadas.Checked = True
        Else
            chkLetProtestadas.Checked = False
        End If
        If fSLC = "1" Then
            chkSinLC.Checked = True
        Else
            chkSinLC.Checked = False
        End If
        If fBM = "1" Then
            chkBloqManual.Checked = True
            cboMotivoBL.SelectedValue = motbloq
        Else
            chkBloqManual.Checked = False
            cboMotivoBL.SelectedIndex = 0
        End If
    End Sub

    Function LoadAutoComplete() As AutoCompleteStringCollection
        Dim dt As DataTable = servicio1.obtenerGruposClientes().Tables(0)

        Dim stringCol As New AutoCompleteStringCollection()

        For Each row As DataRow In dt.Rows
            stringCol.Add(Convert.ToString(row("GRC_Codigo")))
        Next

        Return stringCol
    End Function

    Sub mostrarClientesVinculados(codGrupo As String, codCliente As String)
        Dim ds As DataSet = servicio1.obtenerClientesVinculados(codGrupo, codCliente)
        dgvVinculados.Rows.Clear()
        For i = 0 To ds.Tables(0).Rows.Count - 1
            dgvVinculados.Rows.Add(ds.Tables(0).Rows(i)("CLI_Codigo").ToString.Trim, ds.Tables(0).Rows(i)("CLI_Ruc").ToString.Trim, ds.Tables(0).Rows(i)("CLI_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("CLI_Activo").ToString.Trim)
        Next

        If ds.Tables(0).Rows.Count > 0 Then
            dgvVinculados.Rows(0).Selected = False
        End If
    End Sub

    Sub cargarGruposClientes()
        txtGrupo.AutoCompleteCustomSource = Me.LoadAutoComplete
        txtGrupo.AutoCompleteMode = AutoCompleteMode.Suggest
        txtGrupo.AutoCompleteSource = AutoCompleteSource.CustomSource
    End Sub

    Sub mostrarDireccionesCliente(cia As String, codCliente As String)
        Dim ds As DataSet = servicio1.obtenerDireccionesCliente(cia, codCliente)
        dgvDirecciones.Rows.Clear()
        For i = 0 To ds.Tables(0).Rows.Count - 1
            dgvDirecciones.Rows.Add(i + 1, ds.Tables(0).Rows(i)("CLEN_Direccion").ToString.Trim, ds.Tables(0).Rows(i)("CLEN_Referencia").ToString.Trim, ds.Tables(0).Rows(i)("CLEN_Contacto").ToString.Trim,
                                    ds.Tables(0).Rows(i)("DEP_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("PRO_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("DIS_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("TEN_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("CLEN_Codigo").ToString.Trim, ds.Tables(0).Rows(i)("CLEN_Activo").ToString.Trim, ds.Tables(0).Rows(i)("TEN_Codigo").ToString.Trim)
        Next

        If ds.Tables(0).Rows.Count > 0 Then
            dgvDirecciones.Rows(0).Selected = False
        End If
    End Sub

    Sub agregarPersona()
        Dim frmAgrega As New frmAgregaTipos("", txtCliente.Text.Trim)
        If frmAgrega.ShowDialog = Windows.Forms.DialogResult.OK Then
            mostrarPersonasClientes()
        End If
    End Sub

    Sub mostrarCelulares(codCliente As String)
        Dim ds As DataSet = servicio1.obtenerEmpresaCelulares(codCliente)
        dgvCelulares.Rows.Clear()
        For i = 0 To ds.Tables(0).Rows.Count - 1
            dgvCelulares.Rows.Add(ds.Tables(0).Rows(i)("ECE_Operador").ToString.Trim, ds.Tables(0).Rows(i)("ECE_Tipo").ToString.Trim, ds.Tables(0).Rows(i)("ECE_Numero").ToString.Trim, ds.Tables(0).Rows(i)("ECE_Codigo").ToString.Trim, ds.Tables(0).Rows(i)("ECE_Activo").ToString.Trim)
        Next

        If ds.Tables(0).Rows.Count > 0 Then
            dgvCelulares.Rows(0).Selected = False
        End If
    End Sub

    Sub actualizaLineaCredito(codCliente As String, codMotivo As String, monto As Decimal)
        If MsgBox("¿Está seguro que desea ingresar la línea de crédito?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            If servicio1.actualizarLineaCreditoXCliente(codCliente, codMotivo, CDec(txtLineaNueva.Text.Trim), CDec(txtLinCredActual.Text.Trim), usuario) = True Then
                util.mensaje("Se actualizó la línea de crédito correctamente.")
                txtLinCredActual.Text = txtLineaNueva.Text.Trim
                cboMotivoLC.SelectedIndex = 0
                txtLineaNueva.Text = "0.00"
                mostrarConceptosCliente(txtCliente.Text.Trim)
            Else
                util.mensaje("Ocurrió un error. Intentelo nuevamente.")
            End If
        End If
    End Sub

    Sub mostrarSucursalesCliente(codCliente As String)
        Dim ds As DataSet = servicio1.obtenerSucursalesXCliente(codCliente)
        dataSucursalAgencia = ds.Tables(0).DefaultView

        dgvSucursales.DataSource = dataSucursalAgencia

        If dataSucursalAgencia.Count > 0 Then
            dgvSucursales.Rows(0).Selected = False
        End If
    End Sub

    Sub mostrarConceptosCliente(codCliente As String)
        Dim ds As DataSet = servicio1.obtenerConceptosXCliente(codCliente)
        dgvConceptos.Rows.Clear()
        For i = 0 To ds.Tables(0).Rows.Count - 1
            dgvConceptos.Rows.Add(ds.Tables(0).Rows(i)("CON_Descripcion").ToString.Trim, ds.Tables(0).Rows(i)("Fecha").ToString.Trim, ds.Tables(0).Rows(i)("CCN_Descripcion").ToString.Trim,
                                  ds.Tables(0).Rows(i)("Usuario").ToString.Trim, ds.Tables(0).Rows(i)("CCN_Codigo").ToString.Trim, ds.Tables(0).Rows(i)("CON_Codigo").ToString.Trim)
        Next
        If ds.Tables(0).Rows.Count > 0 Then
            dgvConceptos.Rows(0).Selected = False
        End If
    End Sub

    Sub agregarCel()
        Dim frmAgregaCel As New frmAgregaCelulares("", txtCliente.Text.Trim, "", "", "", "")
        If frmAgregaCel.ShowDialog = Windows.Forms.DialogResult.OK Then
            mostrarCelulares(txtCliente.Text.Trim)
        End If
    End Sub

    Sub limpiarInformacionCabecera()
        cambiante = True
        txtCliente.Text = ""
        txtGrupo.Text = ""
        txtRUC.Text = ""
        txtDNI.Text = ""
        txtRazonSocial.Text = ""
        txtNombreComercial.Text = ""
        txtDireccionFiscal.Text = ""
        txtMarca.Text = ""
        txtVendedor.Text = ""
        lblVendedor.Text = ""
        txtCobrador.Text = ""
        lblCobrador.Text = ""
        txtTelefono.Text = ""
        chkPercepcion.Checked = False
        chkActivo.Checked = False
        cboDepartamento1.SelectedValue = "0"
        txtLatitud.Text = ""
        txtLongitud.Text = ""
        cboProcedencia.SelectedIndex = 0
        cboClase.SelectedIndex = 0
        cboEstado.SelectedIndex = 0
        cboCategoria.SelectedIndex = 0
        cboVenta.SelectedIndex = 0
        txtEmpRazon.Text = ""
        txtEmpTel.Text = ""
        txtEmpFax.Text = ""
        txtEmpEmail.Text = ""
        mostrarBotones(True, False)

        'Prueba
        txtLinCredActual.Text = ""
    End Sub

    Sub limpiarGeneralPropietario()
        dgvPropietario.Rows.Clear()
        dgvVinculados.Rows.Clear()
        dgvCelulares.Rows.Clear()
    End Sub

    Sub limpiarLugaresEntrega()
        dgvDirecciones.Rows.Clear()
    End Sub

    Sub limpiarAgenciaSucursales()
        txtDescripcion.Text = ""
        Dim ds As DataSet = servicio1.obtenerSucursalesXCliente("XX-XXX")
        dataSucursalAgencia = ds.Tables(0).DefaultView
        dgvSucursales.DataSource = dataSucursalAgencia
    End Sub

    Sub limpiarBloqueos()
        cboMotivoBL.SelectedIndex = 0
        chkDocVencidos.Checked = False
        chkLetXAceptar.Checked = False
        chkLetProtestadas.Checked = False
        chkSinLC.Checked = False
        chkBloqManual.Checked = False
        cboMotivoLC.SelectedIndex = 0
        txtLineaNueva.Text = "0.00"
    End Sub

    Sub limpiarConceptos()
        dgvConceptos.Rows.Clear()
    End Sub

    Sub limpiarTodo()
        limpiarInformacionCabecera()
        limpiarGeneralPropietario()
        limpiarLugaresEntrega()
        limpiarAgenciaSucursales()
        limpiarBloqueos()
        limpiarConceptos()
    End Sub

    'Eventos
    '*******************************************************************************************************
    Private Sub frmRegistroClientes_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        cargaInicial()
    End Sub

    Private Sub cboClase_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cboClase.SelectedValueChanged
        mostrarTipo(cboClase.SelectedValue.ToString, "0")
    End Sub

    Private Sub txtRUC_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtRUC.KeyDown
        Dim texto As String = txtRUC.Text.Trim
        If e.KeyValue = Keys.Enter Then
            If texto = "" Then
                util.mensaje("Ingrese un Número de RUC")
            Else
                mostrarInformacionClienteXRUC(texto)
            End If
        End If
    End Sub

    Private Sub cboDepartamento_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cboDepartamento1.SelectedValueChanged
        cargarProvincias(cboDepartamento1.SelectedValue.ToString, cboProvincia1)
    End Sub

    Private Sub cboProvincia_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cboProvincia1.SelectedValueChanged
        cargarDistritos(cboProvincia1.SelectedValue.ToString, cboDistrito1)
    End Sub

    Private Sub txtVendedor_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtVendedor.KeyDown
        Dim texto As String = txtVendedor.Text.Trim
        If e.KeyValue = Keys.Enter Then
            If texto = "" Then
                lblVendedor.Text = ""
            Else
                mostrarVendedor(texto)
            End If
        ElseIf e.KeyValue = Keys.Add Then

        End If
    End Sub

    Private Sub txtCobrador_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtCobrador.KeyDown, txtTelefono.KeyDown
        Dim texto As String = txtCobrador.Text.Trim
        If e.KeyValue = Keys.Enter Then
            If texto = "" Then
                lblCobrador.Text = ""
            Else
                mostrarCobradores(texto, CIA)
            End If
        ElseIf e.KeyValue = Keys.Add Then

        End If
    End Sub

    Private Sub txtCliente_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtCliente.KeyDown
        Dim texto As String = txtCliente.Text.Trim
        If e.KeyValue = Keys.Enter Then
            If texto = "" Then
                util.mensaje("Ingrese el código del cliente.")
            Else
                Dim entCliente As Cliente = servicio1.obtenerClienteXID(texto, "")
                If entCliente Is Nothing Then
                    util.mensaje("Ocurrió un problema al obtener al Cliente o Cliente no existe.")
                    mostrarBotones(True, False)
                Else
                    cambiante = False
                    mostrarBotones(False, True)
                    txtCliente.Text = entCliente.CLI_Codigo
                    txtGrupo.Text = entCliente.GRC_Cliente
                    txtRUC.Text = entCliente.CLI_RUC
                    txtDNI.Text = entCliente.CLI_DNI
                    txtRazonSocial.Text = entCliente.CLI_RazonSocial
                    txtNombreComercial.Text = entCliente.CLI_NomComercial
                    txtDireccionFiscal.Text = entCliente.CLI_DireccionFiscal
                    mostrarVendedor(entCliente.VEN_Codigo)
                    mostrarCobradores(entCliente.COB_Codigo, CIA)
                    txtMarca.Text = entCliente.CLI_Marca
                    txtTelefono.Text = entCliente.CLI_Telefono
                    If entCliente.DIS_Codigo <> "" Then
                        cboDepartamento1.SelectedValue = entCliente.DIS_Codigo.Substring(0, 2)
                        cboProvincia1.SelectedValue = entCliente.DIS_Codigo.Substring(0, 4)
                        cboDistrito1.SelectedValue = entCliente.DIS_Codigo
                    End If
                    txtLatitud.Text = entCliente.CLI_Latitud
                    txtLongitud.Text = entCliente.CLI_Longitud
                    cboProcedencia.SelectedValue = entCliente.PRC_Codigo
                    cboClase.SelectedValue = entCliente.CLC_Codigo
                    cboTipo.SelectedValue = entCliente.TIC_Codigo
                    cboEstado.SelectedValue = entCliente.ESC_Codigo
                    cboCategoria.SelectedValue = entCliente.CAC_Codigo
                    cboVenta.SelectedValue = entCliente.CNV_Codigo
                    mostrarActivo(entCliente.CLI_Activo)
                    mostrarPercepcion(entCliente.CLI_Percepcion)
                    txtEmpRazon.Text = entCliente.CLI_EmpRazonSocial
                    txtEmpTel.Text = entCliente.CLI_EmpTelefono
                    txtEmpFax.Text = entCliente.CLI_EmpFax
                    txtEmpEmail.Text = entCliente.CLI_EmpEmail

                    'Prueba
                    txtLinCredActual.Text = entCliente.CLI_LineaCredito

                    mostrarPersonasClientes()
                    mostrarClientesVinculados(txtGrupo.Text.Trim, txtCliente.Text.Trim)
                    mostrarCelulares(txtCliente.Text.Trim)
                    mostrarDireccionesCliente(CIA, txtCliente.Text.Trim)
                    mostrarSucursalesCliente(txtCliente.Text.Trim)
                    mostrarBloqueos(entCliente.CLI_MDocumentosVencidos, entCliente.CLI_MLetrasAceptar, entCliente.CLI_MLetrasProtestadas, entCliente.CLI_MSinLineaCredito, entCliente.CLI_MBloqueoManual, entCliente.MBL_Codigo)
                    mostrarConceptosCliente(txtCliente.Text.Trim)
                End If
            End If
        ElseIf e.KeyValue = Keys.Add Then

        End If
    End Sub

    Private Sub btnNuevo_Click(sender As System.Object, e As System.EventArgs) Handles btnNuevo.Click
        limpiarTodo()
        txtCliente.Focus()
    End Sub

    Private Sub btnActualizar_Click(sender As System.Object, e As System.EventArgs) Handles btnActualizar.Click
        actualizarInformacionCliente()
    End Sub

    Private Sub btnGuardar_Click(sender As Object, e As System.EventArgs) Handles btnGuardar.Click
        registrarInformacionCliente()
    End Sub

    Private Sub txtCliente_LostFocus(sender As Object, e As System.EventArgs) Handles txtCliente.LostFocus
        If cambiante = True Then
            If txtCliente.Text <> "" Then
                txtGrupo.Text = txtCliente.Text
            End If
        End If
    End Sub

    Private Sub btnConsultar_Click(sender As System.Object, e As System.EventArgs) Handles btnConsultar.Click
        Dim formularioSunat As New frmBusquedaSunat(txtRUC.Text.Trim)
        If formularioSunat.ShowDialog = Windows.Forms.DialogResult.OK Then
            'no se que mas poner
        End If
    End Sub

    Private Sub cboDepartamento2_SelectedValueChanged(sender As Object, e As System.EventArgs)
        'cargarProvincias(cboDepartamento2.SelectedValue.ToString, cboProvincia2)
    End Sub

    Private Sub cboProvincia2_SelectedValueChanged(sender As Object, e As System.EventArgs)
        'cargarDistritos(cboProvincia2.SelectedValue.ToString, cboDistrito2)
    End Sub

    Private Sub dgvPropietario_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPropietario.CellClick
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            Dim frmtipo As New frmAgregaTipos(dgvPropietario.Item("Column9", f).Value, txtCliente.Text.Trim)
            If frmtipo.ShowDialog = Windows.Forms.DialogResult.OK Then
                mostrarPersonasClientes()
            End If
        End If
    End Sub

    Private Sub dgvPropietario_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvPropietario.CellFormatting
        For i = 0 To dgvPropietario.Rows.Count - 1
            If dgvPropietario.Item("Column12", i).Value = "0" And e.RowIndex = i Then
                e.CellStyle.BackColor = Color.White
            Else
                If dgvPropietario.Item("Column14", i).Value = "1" And e.RowIndex = i Then
                    e.CellStyle.BackColor = Color.PaleGreen
                ElseIf dgvPropietario.Item("Column14", i).Value = "2" And e.RowIndex = i Then
                    e.CellStyle.BackColor = Color.SkyBlue
                ElseIf dgvPropietario.Item("Column14", i).Value = "3" And e.RowIndex = i Then
                    e.CellStyle.BackColor = Color.Orange
                End If
            End If
        Next
    End Sub

    Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
        agregarPersona()
    End Sub

    Private Sub dgvVinculados_CellDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvVinculados.CellDoubleClick
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            Dim frmCliente As New frmRegistroClientes(dgvVinculados.Item("DataGridViewTextBoxColumn12", f).Value)
            frmCliente.Show()
        End If
    End Sub

    Private Sub dgvVinculados_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvVinculados.CellFormatting
        For i = 0 To dgvVinculados.Rows.Count - 1
            If dgvVinculados.Item("Column10", i).Value = "0" And e.RowIndex = i Then
                e.CellStyle.BackColor = Color.White
            ElseIf dgvVinculados.Item("Column10", i).Value = "1" And e.RowIndex = i Then
                e.CellStyle.BackColor = Color.PaleGreen
            End If
        Next
    End Sub

    Private Sub btnAgregarCel_Click(sender As System.Object, e As System.EventArgs) Handles btnAgregarCel.Click
        agregarCel()
    End Sub

    Private Sub dgvCelulares_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvCelulares.CellClick
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            Dim frmAgregar As New frmAgregaCelulares(dgvCelulares.Item("Column11", f).Value, txtCliente.Text.Trim, dgvCelulares.Item("clmOperador", f).Value, dgvCelulares.Item("clmTipo", f).Value, dgvCelulares.Item("clmNumero", f).Value, dgvCelulares.Item("Column15", f).Value)
            If frmAgregar.ShowDialog = Windows.Forms.DialogResult.OK Then
                mostrarCelulares(txtCliente.Text.Trim)
            End If
        End If
    End Sub

    Private Sub dgvCelulares_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvCelulares.CellFormatting
        For i = 0 To dgvCelulares.Rows.Count - 1
            If dgvCelulares.Item("Column15", i).Value = "0" And e.RowIndex = i Then
                e.CellStyle.BackColor = Color.White
            Else
                e.CellStyle.BackColor = Color.PaleGreen
            End If
        Next
    End Sub

    Private Sub dgvDirecciones_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvDirecciones.CellClick
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            Dim frmAgregaDireccion As New frmAgregaDireccion(CIA, dgvDirecciones.Item("Column16", f).Value, txtCliente.Text.Trim)
            If frmAgregaDireccion.ShowDialog = Windows.Forms.DialogResult.OK Then
                mostrarDireccionesCliente(CIA, txtCliente.Text.Trim)
            End If
        End If
    End Sub

    Private Sub dgvDirecciones_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvDirecciones.CellFormatting
        For i = 0 To dgvDirecciones.Rows.Count - 1
            If dgvDirecciones.Item("Column17", i).Value = "0" And e.RowIndex = i Then
                e.CellStyle.BackColor = Color.White
            Else
                If dgvDirecciones.Item("Column18", i).Value = "1" And e.RowIndex = i Then
                    e.CellStyle.BackColor = Color.PaleGreen
                ElseIf dgvDirecciones.Item("Column18", i).Value = "3" And e.RowIndex = i Then
                    e.CellStyle.BackColor = Color.SkyBlue
                ElseIf dgvDirecciones.Item("Column18", i).Value = "2" And e.RowIndex = i Then
                    e.CellStyle.BackColor = Color.Orange
                End If
            End If
        Next
    End Sub

    Private Sub btnAgregaDireccion_Click(sender As System.Object, e As System.EventArgs) Handles btnAgregaDireccion.Click
        Dim frmAgregaDireccion As New frmAgregaDireccion(CIA, "", txtCliente.Text.Trim)
        If frmAgregaDireccion.ShowDialog = Windows.Forms.DialogResult.OK Then
            mostrarDireccionesCliente(CIA, txtCliente.Text.Trim)
        End If
    End Sub

    Private Sub btnAsigAgencia_Click(sender As System.Object, e As System.EventArgs) Handles btnAsigAgencia.Click
        Dim frmasignaAgencia As New frmAgenciaCliente(txtCliente.Text.Trim, txtRazonSocial.Text.Trim, 1)
        If frmasignaAgencia.ShowDialog = Windows.Forms.DialogResult.OK Then
            mostrarSucursalesCliente(txtCliente.Text.Trim)
        End If
    End Sub

    Private Sub btnDesactivaSucursal_Click(sender As System.Object, e As System.EventArgs) Handles btnDesactivaSucursal.Click
        If MsgBox("¿Esta seguro que desea realizar este eliminación?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            If servicio1.actualizaSucursalXCliente(codSucursal, txtCliente.Text.Trim, "0") = True Then
                util.mensaje("Se eliminó correctamente.")
                mostrarSucursalesCliente(txtCliente.Text.Trim)
            Else
                util.mensaje("Ocurrió un error. Intentelo nuevamente.")
            End If
        End If
    End Sub

    Private Sub dgvSucursales_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvSucursales.CellClick
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            codSucursal = dgvSucursales.Item("clmCodAgencia", f).Value
        End If
    End Sub

    Private Sub txtCliente_TextChanged(sender As Object, e As System.EventArgs) Handles txtCliente.TextChanged
        Dim texto As String = txtCliente.Text.Trim
        If texto.Length = 2 Then
            txtCliente.Text = texto & "-"
            util.derecha()
            util.derecha()
            util.derecha()
        End If
    End Sub

    Private Sub chkBloqManual_CheckedChanged(sender As Object, e As System.EventArgs) Handles chkBloqManual.CheckedChanged
        If chkBloqManual.Checked = True Then
            cboMotivoBL.Enabled = True
        Else
            cboMotivoBL.Enabled = False
            cboMotivoBL.SelectedIndex = 0
        End If
    End Sub

    Private Sub btnActLinCredito_Click(sender As System.Object, e As System.EventArgs) Handles btnActLinCredito.Click
        actualizaLineaCredito(txtCliente.Text.Trim, cboMotivoLC.SelectedValue.ToString, CDec(txtLineaNueva.Text.Trim))
    End Sub

    Private Sub txtDescripcion_TextChanged(sender As Object, e As System.EventArgs) Handles txtDescripcion.TextChanged
        dataSucursalAgencia.RowFilter = "AGE_Descripcion LIKE '%" & txtDescripcion.Text.Trim & "%'"
    End Sub

    Private Sub btnAgregarConcepto_Click(sender As System.Object, e As System.EventArgs) Handles btnAgregarConcepto.Click
        Dim frmAgregaConcepto As New frmAgregaConceptoNuevo(txtCliente.Text.Trim, txtRazonSocial.Text.Trim, "", "0", "", usuario)
        If frmAgregaConcepto.ShowDialog = Windows.Forms.DialogResult.OK Then
            mostrarConceptosCliente(txtCliente.Text.Trim)
        End If
    End Sub

    Private Sub dgvConceptos_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvConceptos.CellClick
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            Dim frmAgregaConcepto As New frmAgregaConceptoNuevo(txtCliente.Text.Trim, txtRazonSocial.Text.Trim, dgvConceptos.Item("Column21", f).Value, dgvConceptos.Item("Column26", f).Value, dgvConceptos.Item("clmDetalle", f).Value, usuario)
            If frmAgregaConcepto.ShowDialog = Windows.Forms.DialogResult.OK Then
                mostrarConceptosCliente(txtCliente.Text.Trim)
            End If
        End If
    End Sub

End Class